package com.framework.factory;

import com.framework.state.GeneradorArchivo4505State;
import com.framework.state.impl.GeneradorArchivo4505Impl;
import com.framework.state.impl.GeneradorArchivoExcel4505;
import com.framework.state.impl.GeneradorArchivoPlano4505;

/**
 * Esta clase utiliza el patron de dise?o factory
 * para crear las instancias correspondientes
 * para cada generador de archivo
 * @author Luis miguel
 * */
public class GeneradorArchivo4505Factory {
	
	/**
	 * Genera las instancias dependiendo la clase 
	 * que implemente de GeneradorArchivo4505State
	 * @author Luis miguel
	 * @see GeneradorArchivo4505State
	 * */
	public static GeneradorArchivo4505Impl getGeneradorArchivo4505State(
			Class<? extends GeneradorArchivo4505Impl> classe) throws Exception{
        if(classe != null){
        	return (GeneradorArchivo4505Impl) classe.newInstance(); 
        }
        return null;
	}
	
	/**
	 * Esta metodo me perimite generar una instancia dependiendo la clase 
	 * que implemente de GeneradorArchivo4505State dependiendo del tipo
	 * @author Luis miguel
	 * @see GeneradorArchivo4505State
	 * */
	public static GeneradorArchivo4505Impl getGeneradorArchivo4505S(String tipo) throws Exception{
		 if(tipo.equals(GeneradorArchivo4505State.TIPO_ARCHIVO_PLANO)){
			 return getGeneradorArchivo4505State(GeneradorArchivoPlano4505.class);
		 }else if(tipo.equals(GeneradorArchivo4505State.TIPO_ARCHIVO_EXCEL)){
			 return getGeneradorArchivo4505State(GeneradorArchivoExcel4505.class);
		 }else{
			 return null;
		 }
	}
	
}
